﻿namespace MicroCloud.Utils
{
    /// <summary>
    /// 身份认证令牌请求DTO
    /// </summary>
    public class TokenDto
    {
        #region 属性
        /// <summary>
        /// 获取或设置 身份认证令牌请求类型
        /// </summary>
        public string GrantType { get; set; }

        /// <summary>
        /// 获取或设置 账户名，可以是用户名，Email，手机号等
        /// </summary>
        public string Account { get; set; }

        /// <summary>
        /// 获取或设置 密码
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// 获取或设置 组织机构编号
        /// </summary>
        public string OrganizationId { get; set; }

        /// <summary>
        /// 获取或设置 客户端类型
        /// </summary>
        public RequestClientType ClientType { get; set; }

        /// <summary>
        /// 获取或设置 客户端ID
        /// 注：相同的用户身份、客户端ID只能同时登录一个，若不限制，该属性置空
        /// </summary>
        public string ClientId { get; set; }

        /// <summary>
        /// 获取或设置 刷新令牌
        /// </summary>
        public string RefreshToken { get; set; }

        /// <summary>
        /// 获取或设置 验证码
        /// </summary>
        public string VerifyCode { get; set; }

        /// <summary>
        /// 获取或设置 验证码编号
        /// </summary>
        public string VerifyCodeId { get; set; }

        #endregion

    }

    /// <summary>
    /// 手机号身份认证令牌请求DTO
    /// </summary>
    public class PhoneTokenDto
    {
        #region 属性
        /// <summary>
        /// 获取或设置 手机号码
        /// </summary>
        [DataType(DataType.PhoneNumber)]
        public string PhoneNumber { get; set; }

        /// <summary>
        /// 获取或设置 短信验证码
        /// </summary>
        public string SmsCode { get; set; }

        /// <summary>
        /// 获取或设置 短信验证码编号
        /// </summary>
        public string SmsCodeId { get; set; }

        /// <summary>
        /// 获取或设置 组织机构编号
        /// </summary>
        public string OrganizationId { get; set; }

        /// <summary>
        /// 获取或设置 客户端类型
        /// </summary>
        public RequestClientType ClientType { get; set; }

        /// <summary>
        /// 获取或设置 客户端ID
        /// 注：相同的用户身份、客户端ID只能同时登录一个，若不限制，该属性置空
        /// </summary>
        public string ClientId { get; set; }

        /// <summary>
        /// 获取或设置 验证码
        /// </summary>
        public string VerifyCode { get; set; }

        /// <summary>
        /// 获取或设置 验证码编号
        /// </summary>
        public string VerifyCodeId { get; set; }

        #endregion

    }

    /// <summary>
    /// 授权码身份认证令牌请求DTO
    /// </summary>
    public class AuthorizationTokenDto
    {
        #region 属性
        /// <summary>
        /// 获取或设置 账号
        /// </summary>
        public string Account { get; set; }
        
        /// <summary>
        /// 获取或设置 授权码
        /// </summary>
        public string AuthCode { get; set; }
        
        /// <summary>
        /// 获取或设置 组织机构编号
        /// </summary>
        public string OrganizationId { get; set; }
        
        /// <summary>
        /// 获取或设置 客户端类型
        /// </summary>
        public RequestClientType ClientType { get; set; }
        
        /// <summary>
        /// 获取或设置 客户端ID
        /// 注：相同的用户身份、客户端ID只能同时登录一个，若不限制，该属性置空
        /// </summary>
        public string ClientId { get; set; }

        /// <summary>
        /// 获取或设置 验证码
        /// </summary>
        public string VerifyCode { get; set; }

        /// <summary>
        /// 获取或设置 验证码编号
        /// </summary>
        public string VerifyCodeId { get; set; }

        #endregion

    }

}
